'use strict';
const chalk = require('chalk');
const inquirer = require('inquirer');
const config = require('./config');

// 封装下载列表数据
module.exports = answers => {
    return new Promise(resolve => {
        // 查找项目配置
        const productConfigPart1 = config.productMap[answers.name];
        console.assert(productConfigPart1, '项目不存在，请新建cli项目配置');
        // 查询技术栈
        let productConfigPart2 = productConfigPart1[answers.technology];
        console.assert(productConfigPart2, '项目技术栈远程仓库不存在，请新建远程仓库链接');
        // 询问需要哪些可选组件
        if(productConfigPart2.choice && Object.keys(productConfigPart2.choice).length > 0) {
            inquirer.prompt({
                // 支持项目选择
                name: 'select',
                type: 'checkbox',
                message: '请选择需要的插件: ',
                choices: Object.keys(productConfigPart2.choice).map(name => {
                    return { name };                    
                })
            }).then(({ select }) => {
                // 删掉没选的
                Object.keys(productConfigPart2.choice).forEach(d => {
                    if(!select.includes(d)) {
                        delete productConfigPart2.choice[d];
                    }
                });
                resolve(productConfigPart2);
            });
        } else {
            delete productConfigPart2.choice;
            resolve(productConfigPart2);
        }
    });
};


